<?php

/**
 * Permite modificar los datos de los uauarios del sistema
 * @package simertweb 
 * @subpackage controllers  
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Modificar_usuario extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('acceso');
    }

    /**
     * Muestra la interfaz para modificar un usuario
     * @param type $data2 es el criterio de búsqueda
     */
    function index($data2 = "") {
        if ($this->acceso->sesion() == 1) {
            $datax['var'] = $data2;
            $data['usuarios'] = $this->mempleado->listar_usuarios_habilitados();
            $data3['deshabilitados'] = $this->mempleado->listar_usuarios_deshabilitados();
            $this->load->view('includes/menu_izquierdo', $data3);
            $this->load->view('includes/cabecera', $data);
            $this->load->view('modificar_usuario', $datax);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Muestra la lista de usuarios del sistema
     */
    function listarUsuarios() {
        $this->form_validation->set_rules('buscar', 'Buscar', 'required', 'trim');
        if ($this->form_validation->run() === TRUE) {
            $datax['var'] = "";
            $data['listausuarios'] = $this->mempleado->listarUsuario($_POST["buscar"]);
            $data2['listadeshabilitados'] = $this->mempleado->buscar_usuarios_deshabilitados($_POST["buscar"]);
            $this->load->view('includes/menu_izquierdo', $datax);
            $this->load->view('includes/cabecera', $data2);
            $this->load->view('modificar_usuario', $data);
            $this->load->view('includes/footer');
        } else {
            $data2 = FALSE;
            $this->index($data2);
        }
    }

    /**
     * Muestra los datos de un usuario del sistema
     */
    function cargarUsuario() {
        $this->form_validation->set_rules('lista', 'Usuarios', 'required');
        if ($this->form_validation->run() === TRUE) {
            $data['datosusuario'] = $this->mempleado->datosUsuario($_POST["lista"]);
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('modificar_usuario', $data);
            $this->load->view('includes/footer');
        } else {
            $data2 = FALSE;
            $this->index($data2);
        }
    }

    /**
     * Permite modificar los datos de un usuario del sistema
     */
    function modificar() {
        $this->form_validation->set_rules('codigo', 'Codigo', 'required');
        $this->form_validation->set_rules('nombres', 'Nombres', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('apellidos', 'Apellidos', 'required|callback_alpha_space|min_length[3]|max_length[30]|trim');
        $this->form_validation->set_rules('cedula', 'Cédula', 'callback_modificarcedula_check|callback_validar_cedula|required|integer|exact_length[10]|trim');
        $this->form_validation->set_rules('direccion', 'Dirección', 'required|trim');
        $this->form_validation->set_rules('telefono', 'Teléfono', 'integer|trim|min_length[7]|max_length[10]');
        $this->form_validation->set_rules('correo', 'Correo', 'valid_email|trim');
        $this->form_validation->set_rules('nombreusuario', 'Usuario', 'callback_modificarnombreusuario_check|required|min_length[5]|max_length[30]|trim');

        if ($this->form_validation->run() == TRUE) {
            //llama al metodo para modificar el usuario y almacena en una variable el mensaje
            //que este devuelve
            $this->mempleado->actualizar_usuario($_POST["codigo"], $_POST["nombreusuario"]);
            $data['message'] = "";
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('includes/mensaje_exito', $data);
            $this->load->view('includes/footer');
        } else {
            $data2 = TRUE;
            $this->index($data2);
        }
    }

    /**
     * Validar que el nombre de usuario sea único
     */
    function modificarnombreusuario_check() {
        if ($this->mempleado->validar_usuario_modificar() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('modificarnombreusuario_check', '<p style="color: red">El usuario ingresado ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Valida que el número de cédula de identidad sea corecto
     * @return boolean
     */
    function validar_cedula() {
        $mensaje = $this->mpersona->validarCI($_POST['cedula']);
        if (is_bool($mensaje)) {
            return TRUE;
        } else {
            $this->form_validation->set_message('validar_cedula', $mensaje);
            return FALSE;
        }
    }

    /**
     * Valida qu el número de cédula de identidad sea único
     * @return boolean
     */
    function modificarcedula_check() {
        if ($this->mpersona->validar_persona_modificar($this->mpersona->obtener_idPersona($_POST["codigo"])) == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('modificarcedula_check', '<p style="color: red">La C.I. ingresada ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

}

?>
